User inputs to computer systems may be supplied in various ways. For example, when the computer system is a video game console, inputs are typically supplied using cross-switches, joysticks, buttons and the like provided on a controller. A cross-switch or a joystick may be used to control movement of a video game object in various directions and various buttons may be used to control character actions such as jumping, using a weapon and the like.
The controller described in this patent application additionally or alternatively includes an accelerometer arrangement that generates inputs to a video game console or other computer system based on certain movements and/or orientations of the controller. Such a controller can provide a more intuitive user interface in which, for example, movement of a video game object can be controlled by moving the controller in a particular manner. By way of illustration, a player may increase or decrease the altitude of a plane in a video game by tilting the controller up or down. The accelerometer arrangement can be used to provide gaming experiences that cannot be provided easily (if at all) using a controller having cross-switches, joysticks, buttons, etc.
Different accelerometers can sometimes provide different readings when subjected to the same motion (acceleration). These different readings can result from, for example, differences in the electrical or mechanical components of the accelerometers. Thus, there can be differences in the accelerometer outputs of accelerometers respectively provided in first and second controllers even when these controllers are moved or held in the same manner.
Moreover, in the case of a multi-axis accelerometer, the sensitivity of each axis to the same acceleration may be different. For example, an accelerometer output generated when a user holds a controller so that the gravity is aligned with a first axis (e.g., the Y-axis) may be different from an accelerometer output generated when the controller is rotated so that the gravity is aligned with a second axis (e.g., the X-axis). This means that the way the user plays a game, for example, if he/she sits down or moves the orientation of the wrist, can affect the measured acceleration values.
The systems and methods described herein provide a normalization constant for normalizing accelerometer outputs so that they are consistent between different accelerometers, and even for different axes of the same accelerometer. This provides a gaming environment in which the motion of the controller can be translated into motion of player characters on the video screen in a consistent and natural way.
By way of example and without limitation, the video game system looks at a predetermined time period, when the largest difference in the acceleration vectors for each frame is within a small limit, indicating that the player is holding the controller relatively idle. Then, the video game system averages the acceleration vectors over this time period, and the inverse of the magnitude of this average is used as a normalization constant.